자릿수 더하기
문제 설명
자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
제한 조건
- N의 범위 : 100,000,000 이하의 자연수
입출력 예
N | answer |
---|---|
123 | 6 |
987 | 24 |
입출력 예 설명
입출력 예 #1
문제의 예시와 같습니다.
입출력 예 #2
9 + 8 + 7 = 24이므로 24를 return 하면 됩니다.
풀이
def solution(n):
sum = 0
while n > 0:
sum += n % 10
n = n // 10
return sum
일단 전체적인 로직은 다음과 같습니다.
- 일의 자리를 구해서 sum 변수에 누적한다.
- n을 n의 일의 자리를 제거한 값으로 갱신한다.
- 이 과정을 n이 0이 될 때까지 반복한다.
일의 자리를 구하는 방법은 n을 10으로 나눈 나머지를 구하면 됩니다.
그리고 일의 자리를 제거하는 방법은 n을 10으로 나눈 몫으로 갱신해 주면 됩니다.
입출력 예 #2번을 예로 들어보겠습니다.
def solution(n):
sum = 0
while n > 0:
sum += n % 10
n = n // 10
return sum
987은 0보다 크기 때문에 while문 안으로 들어갑니다.
def solution(n):
sum = 0
while n > 0:
sum += n % 10
n = n // 10
return sum
앞에서 n의 일의 자리는 n을 10으로 나눈 나머지를 구하면 된다고 했습니다.
987 % 10은 7이므로 일의 자리인 7을 sum 변수에 누적합니다.
def solution(n):
sum = 0
while n > 0:
sum += n % 10
n = n // 10
return sum
일의 자리를 제거하는 방법은 n을 10으로 나눈 몫으로 갱신해 주면 된다고 했습니다.
987 // 10은 98이므로 n은 일의 자리 7이 제거된 98이 됩니다.
지금부터는 이 과정의 반복이므로 빠르게 진행해 보겠습니다.
def solution(n):
sum = 0
while n > 0:
sum += n % 10
n = n // 10
return sum
98은 0보다 크기 때문에 while문 안으로 들어갑니다.
def solution(n):
sum = 0
while n > 0:
sum += n % 10
n = n // 10
return sum
98 % 10은 8이므로 8을 sum 변수에 누적합니다.
sum에는 이전에 7이 저장되어 있기 때문에 15가 됩니다.
def solution(n):
sum = 0
while n > 0:
sum += n % 10
n = n // 10
return sum
98 // 10은 9가 되므로 n은 9로 갱신됩니다.
def solution(n):
sum = 0
while n > 0:
sum += n % 10
n = n // 10
return sum
9는 0보다 크기 때문에 while문 안으로 들어갑니다.
def solution(n):
sum = 0
while n > 0:
sum += n % 10
n = n // 10
return sum
9 % 10은 9이므로 9를 sum 변수에 누적합니다.
sum에는 이전에 15가 저장되어 있기 때문에 24가 됩니다.
def solution(n):
sum = 0
while n > 0:
sum += n % 10
n = n // 10
return sum
9 // 10은 0이므로 n은 0으로 갱신됩니다.
def solution(n):
sum = 0
while n > 0:
sum += n % 10
n = n // 10
return sum
n이 0이 되었기 때문에 더 이상 while문을 진행하지 않습니다.
성공적으로 n의 각 자릿수의 합을 구했습니다.